package com.ruoyi.system.service.impl;

import com.ruoyi.system.domain.StoreInventory;
import com.ruoyi.system.mapper.StoreInventoryMapper;
import com.ruoyi.system.service.IStoreInventoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StoreInventoryServiceImpl implements IStoreInventoryService {
    @Autowired
    private StoreInventoryMapper storeInventoryMapper;

    @Override
    public StoreInventory selectInventoryByStoreAndItem(String storeId, String itemId) {
        return storeInventoryMapper.selectInventoryByStoreAndItem(storeId, itemId);
    }

    // StoreInventoryServiceImpl.java

    @Override
    public boolean transferInventory(String sourceStoreId, String targetStoreId, String itemId, int quantity) {
        StoreInventory sourceInventory = storeInventoryMapper.selectInventoryByStoreAndItem(sourceStoreId, itemId);
        if (sourceInventory != null && sourceInventory.getNum() >= quantity) {
            storeInventoryMapper.updateInventory(new StoreInventory(sourceStoreId, itemId, sourceInventory.getNum() - quantity));

            StoreInventory targetInventory = storeInventoryMapper.selectInventoryByStoreAndItem(targetStoreId, itemId);
            if (targetInventory != null) {
                storeInventoryMapper.updateInventory(new StoreInventory(targetStoreId, itemId, targetInventory.getNum() + quantity));
            } else {
                storeInventoryMapper.insertInventory(new StoreInventory(targetStoreId, itemId, quantity));
            }
            return true;
        }
        return false;
    }

    @Override
    public List<StoreInventory> selectInventoryList(StoreInventory storeInventory) {
        return storeInventoryMapper.selectInventoryList(storeInventory);
    }

    @Override
    public int insertInventory(StoreInventory storeInventory) {
        return storeInventoryMapper.insertInventory(storeInventory);
    }

    @Override
    public int updateInventory(StoreInventory storeInventory) {
        return storeInventoryMapper.updateInventory(storeInventory);
    }

    @Override
    public int deleteInventoryByStoreAndItem(String storeId, String itemId) {
        return storeInventoryMapper.deleteInventoryByStoreAndItem(storeId, itemId);
    }

    @Override
    public int deleteInventoryByStoreAndItems(String storeId, String[] itemIds) {
        return storeInventoryMapper.deleteInventoryByStoreAndItems(storeId, itemIds);
    }
} 